package samples.chapter04;

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;
import java.util.Set;

/**
 * 第4章 Spring Boot 整合Web开发
 * 4.1 返回JSON数据
 * 4.1.1 默认实现
 * 4.1.2 自定义转换器
 * 1 使用Gson
 * 2 使用fastjson
 * 4.2 静态资源访问
 * 4.2.1 默认策略
 * 4.2.2 自定义策略
 * 1 在配置文件中定义
 * 2 java编码定义
 * 4.3 文件上传
 * 4.3.1 单文件上传
 * 4.3.2 多文件上传
 * 4.4 @CusotmControllerAdvice
 * 4.4.1 全局异常处理
 * 4.4.2 添加全局数据
 * 4.4.3 请求对参数预处理
 * 4.5 自定义错误页
 * 4.5.1 简单配置
 * 4.5.2 复杂配置
 * 1 自定义Error数据
 * 2 自定义Error视图
 * 3 完全自定义
 * 4.6 CORS支持
 * 1 创建Spring Boot工程
 * 2 创建控制器
 * 3 配置跨域
 * 4 测试
 * 4.10 整合Servlet、Filter和Listener
 * 4.11 路径映射
 * 4.12 配置AOP
 * 4.12.1 AOP简介
 * Joinpoint、Pointcut、Advice、Aspect、Target
 * 4.12.2 Sping Boot支持
 * 4.13 其他
 * 4.13.1 自定义欢迎页
 * 4.13.2 自定义faviocn
 * 4.13.3 除去某个自动配置
 * 4.14 小结
 */
@RequestMapping("/chapter04")
@RestController
public class Chapter04Controller {

    @GetMapping("/hello")
    @ResponseBody
    public void hello(Model model) {
        Map<String, Object> map = model.asMap();
        Set<String> keySet = map.keySet();
        for (String key : keySet) {
            Object value = map.get(key);
            System.out.println(key + ":" + value);
        }
    }

    @GetMapping("/hello2")
    public String hello2() {
        int i = 1 / 0;
        return "hello";
    }
}
